          <section class="m-doc-details" id="{{ func.id }}"><div>
            <h3>
              {% if compound.templates != None or func.templates != None %}
              {% if func.include %}
              <div class="m-doc-include m-code m-inverted m-right-m m-text-right"><span class="cp">#include</span> <a class="cpf" href="{{ func.include[1] }}">{{ func.include[0] }}</a></div>
              {% endif %}
              <div class="m-doc-template">
                {% if compound.templates != None %}
                {% set j = joiner(', ') %}
                template&lt;{% for t in compound.templates %}{{ j() }}{{ t.type }} {% if t.name %}{{ t.name }}{% else %}_{{ loop.index }}{% endif %}{% endfor %}&gt;
                {% endif %}
                {% if func.templates != None %}
                {% set j = joiner(', ') %}
                template&lt;{% for t in func.templates %}{{ j() }}{{ t.type }}{% if t.name %} {{ t.name }}{% endif %}{% if t.default %} = {{ t.default }}{% endif %}{% endfor %}&gt;
                {% endif %}
              </div>
              {% endif %}
              {% set j = joiner(',\n              ') %}
              <span class="m-doc-wrap-bumper">{{ func.prefix }}{{ func.type }} {{ prefix }}</span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#{{ func.id }}" class="m-doc-self">{{ func.name }}</a>(</span><span class="m-doc-wrap">{% for param in func.params %}{{ j() }}{{ param.type_name }}{% if param.default %} = {{ param.default }}{% endif %}{% endfor %}){{ func.suffix }}{% if func.is_explicit %} <span class="m-label m-info">explicit</span> {% endif %}{% if func.is_final %} <span class="m-label m-warning">final</span>{% elif func.is_override %} <span class="m-label m-warning">override</span>{% elif func.is_pure_virtual %} <span class="m-label m-warning">pure virtual</span>{% elif func.is_virtual %} <span class="m-label m-warning">virtual</span>{% endif %}{% if func.is_protected %} <span class="m-label m-warning">protected{% if func.is_slot %} slot{% endif %}</span>{% elif func.is_private %} <span class="m-label m-danger">private{% if func.is_slot %} slot{% endif %}</span>{% elif func.is_signal %} <span class="m-label m-success">signal</span>{% elif func.is_slot %} <span class="m-label m-success">public slot</span>{% endif %}{% if func.is_defaulted %} <span class="m-label m-info">defaulted</span>{% endif %}{% if func.is_deleted %} <span class="m-label m-danger">deleted</span>{% endif %}{% if func.is_consteval %} <span class="m-label m-primary">consteval</span>{% elif func.is_constexpr %} <span class="m-label m-primary">constexpr</span>{% endif %}{% if func.is_conditional_noexcept %} <span class="m-label m-success">noexcept(…)</span>{% elif func.is_noexcept %} <span class="m-label m-success">noexcept</span>{% endif %}{% if func.since %} {{ func.since }}{% endif %}</span></span>
              {% if func.include and compound.templates == None and func.templates == None %}
              <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="{{ func.include[1] }}">{{ func.include[0] }}</a></div>
              {% endif %}
            </h3>
            {% if func.brief %}
            <p>{{ func.brief }}</p>
            {% endif %}
            {% if func.has_template_details or func.has_param_details or func.return_value or func.return_values or func.exceptions %}
            <table class="m-table m-fullwidth m-flat">
              {% if func.has_template_details %}
              <thead>
                <tr><th colspan="2">Template parameters</th></tr>
              </thead>
              <tbody>
                {# Unlike with function arguments, where it's desirable to
                   document either all of them or none, template parameters are
                   often implicit, not meant to be specified by the user. Thus,
                   if they're not documented, assume they're implicit, and
                   don't list them in the details. Same is with unnamed
                   template arguments, those aren't shown either. #}
                {% for template in func.templates|selectattr('name')|selectattr('description') %}
                <tr>
                  <td{% if loop.index == 1 %} style="width: 1%"{% endif %}>{{ template.name }}</td>
                  <td>{{ template.description }}</td>
                </tr>
                {% endfor %}
              </tbody>
              {% endif %}
              {% if func.has_param_details %}
              <thead>
                <tr><th colspan="2">Parameters</th></tr>
              </thead>
              <tbody>
                {% for param in func.params|selectattr('name') %}
                <tr>
                  <td{% if loop.index == 1 and not func.has_template_details %} style="width: 1%"{% endif %}>{{ param.name }}{% if param.direction == 'in' %}&nbsp;<span class="m-label m-flat m-info">in</span>{% elif param.direction == 'out' %}&nbsp;<span class="m-label m-flat m-warning">out</span>{% elif param.direction == 'inout' %}&nbsp;<span class="m-label m-flat m-danger">in/out</span>{% endif %}</td>
                  <td>{{ param.description }}</td>
                </tr>
                {% endfor %}
              </tbody>
              {% endif %}
              {% if func.return_value %}
              {{ '<thead>' if func.return_values or func.exceptions else '<tfoot>' }}
                <tr>
                  <th{% if not func.has_template_details and not func.has_param_details %} style="width: 1%"{% endif %}>Returns</th>
                  <td>{{ func.return_value }}</td>
                </tr>
              {{ '</thead>' if func.return_values or func.exceptions else '</tfoot>' }}
              {% elif func.return_values %}
              <thead>
                <tr><th colspan="2">Returns</th></tr>
              </thead>
              {% endif %}
              {% if func.return_values %}
              <tbody>
                {% for value, description in func.return_values %}
                <tr>
                  <td{% if loop.index == 1 and not func.has_template_details and not func.has_param_details and not func.return_value %} style="width: 1%"{% endif %}>{{ value }}</td>
                  <td>{{ description }}</td>
                </tr>
                {% endfor %}
              </tbody>
              {% endif %}
              {% if func.exceptions %}
              <thead>
                <tr><th colspan="2">Exceptions</th></tr>
              </thead>
              <tbody>
                {% for exception, description in func.exceptions %}
                <tr>
                  <td{% if loop.index == 1 and not func.has_template_details and not func.has_param_details and not func.return_value and not func.return_values %} style="width: 1%"{% endif %}>{{ exception }}</td>
                  <td>{{ description }}</td>
                </tr>
                {% endfor %}
              </tbody>
              {% endif %}
            </table>
            {% endif %}
            {% if func.description %}
{{ func.description }}
            {% endif %}
          </div></section>
